from flask import Flask, session, redirect, url_for, escape, request,Response
import json
import functools

class EntityEncoder(json.JSONEncoder):
    '''
    Clase que jsonifica entidades
    '''
    def default(self, obj):
        if hasattr(obj,'__json__') and callable(getattr(obj,'__json__')):
            return obj.__json__()
        # Let the base class default method raise the TypeError
        return json.JSONEncoder.default(self, obj)

def myjsonify(obj):
    '''
    Funcion que jsonifica objetos
    '''
    return Response(response = json.dumps(obj, cls=EntityEncoder), mimetype="application/json")

def jsonifiedview(fn):
    '''
    Decorator que jsonifica resultados
    '''
    @functools.wraps(fn)
    def wrapped():
        return myjsonify(fn())
    return wrapped

def ensureParams(params, toEnsure):
    '''
    Chequea que todos los parametros esten en la lista de parametros
    '''
    for param in toEnsure:
        if not param in params: 
            return False
    return True
    